package cn.ainit.sys.models;

import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpSession;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import cn.ainit.common.ReturnObject;
import cn.ainit.sys.framework.entity.ComButtons;
import cn.ainit.sys.framework.entity.SysButtons;
import cn.ainit.sys.framework.entity.SysColumns;
import cn.ainit.sys.print.entity.SysPrint;
import cn.ainit.sys.query.datastore.DataStore;

public interface SingleDao {
	/**
	 * 根据按钮ID 查询按钮List实体类（SysButtons）
	 * @param butnId
	 * @return
	 * @throws Exception
	 * @author wyang
	 * @date : 2014-3-13 下午03:28:52
	 */
	public List butnList(String butnId) throws Exception;
	/**
	 * 根据按钮ID 查询按钮List 实体类（ComButtons）
	 * @param butnId
	 * @return
	 * @throws Exception
	 * @author wyang
	 * @date : 2014-3-13 下午03:28:52
	 */
	public List<ComButtons> combutnList(String butnId) throws Exception;
	
	/***
	 * 根据dsId得到打印的模板集合
	 * @param dsId
	 * @return
	 * @throws Exception
	 */
	public List<SysPrint> printTypeList(String dsId) throws Exception;
	
	/**
	 * 根据DsId找到datastore
	 * @param dsId
	 * @return
	 * @throws Exception
	 * @author wyang
	 * @date : 2014-3-13 下午03:29:06
	 */
	public DataStore getDataStore(String dsId) throws Exception;
	/**
	 * 根据sql查询相应的数据
	 * @param sqlText
	 * @return
	 * @throws Exception
	 * @author wyang
	 * @date : 2014-3-14 下午03:42:19
	 */
	public List queryRowBySql(String sqlText) throws Exception;
	/**
	 * 加载字段
	 * @param colId
	 * @param type
	 * @return
	 * @throws Exception
	 * @author Xuzq
	 * @date 2014-3-14 下午04:08:56
	 */
	public List<SysColumns> loadColumns(String colId, String type) throws Exception;
	/**
	 * 查询fks
	 * @param dsId
	 * @return
	 * @throws Exception
	 * @author wyang
	 * @date : 2014-3-18 上午10:58:20
	 */
	public List<SysColumns> findFksByDsid(String dsId) throws Exception;
	/***
	 * 查询pks
	 * @param string
	 * @return
	 * @throws Exception
	 * @author wyang
	 * @date : 2014-3-18 上午10:57:26
	 */
	public List<Map<String, Object>> findPksByDsid(String dsId) throws Exception;
	/**
	 * 加载对照信息
	 * @param dsId
	 * @return
	 * @throws Exception
	 * @author wyang
	 * @date : 2014-3-29 下午06:35:53
	 */
	public List loadDzInfo(String dsId)throws Exception;
	/**
	 * 加载用户的数据
	 * @param dsId
	 * @param sqlText
	 * @param string
	 * @return
	 * @throws Exception
	 * @author Xuzq
	 * @date 2014-4-23 上午10:38:40
	 */
	public String formatSql(String dsId, String sqlText, String uid)throws Exception;
	/***
	 * 加载通用2
	 * @param dsid
	 * @return
	 * @throws Exception
	 * @author Xuzq
	 * @date 2014-4-23 下午06:14:44
	 */
	public List<SysButtons> combutnListT(String dsid)throws Exception;
	/***
	 * 加载详情数据
	 * @param dsId
	 * @param sqlText
	 * @param uid
	 * @return
	 * @throws Exception
	 * @author Xuzq
	 * @date 2014-5-20 下午04:48:38
	 */
	public String formatRowSql(String dsId, String sqlText, String uid)throws Exception;
	/**
	 * 根据butnId 查询按钮的list （公用按钮）
	 * @param butnId
	 * @param dsId
	 * @param oId
	 * @return
	 * @throws Exception
	 */
	List combutnListRight(String butnId, String dsId, String oId) throws Exception;
	/**
	 * 根据butnId 查询按钮的list （个性按钮,显示在功能的下面）
	 * @param butnId
	 * @param dsId
	 * @param oId
	 * @return
	 * @throws Exception
	 */
	List butnListRight(String butnId, String dsId, String oId,String flag) throws Exception;
	
	/**
	 * 根据butnId 查询按钮的list （个性按钮,显示和保存并列）
	 * @param butnId
	 * @param dsId
	 * @param oId
	 * @return
	 * @throws Exception
	 */
	List<SysButtons> butnListRightTop(String butnId, String dsId, String oId) throws Exception;
	/**
	 * 导出excel类
	 * @param title 创建工作表的名称
	 * @param url  文件保存的路径及名称
	 * @param topName  excel中显示的翻译名称
	 * @param dbCellName  SQL中的列名
	 * @param list   根据DSID查找sql并执行sql所得到的数据Rows
	 * @return
	 * @throws Exception
	 */
	String dcExcel(String title,String url, String[] topName,
			String[] dbCellName, List<Map<String, String>> list) throws Exception;
	/**
	 * formatSQL  并翻译Ids
	 * @param dsId
	 * @param sqlText
	 * @param uid
	 * @return
	 * @throws Exception
	 */
	String formatTranSql(String dsId, String sqlText, String uid)throws Exception;
	
	/**
	 * 通用导入过程
	 */
	public String getimpFuc(String flg,String dsid,String kvs,String h_id_match)throws Exception;
	/**
	 * 通用导入过程
	 */
	public String getimpFucZT(String flg,String dsid,String kvs,String h_id_match)throws Exception;
	public String getimpFucCYXH(String flg,String dsid,String kvs,String h_id_match)throws Exception;
	public String getimpFucCw(String flg,String dsid,String kvs,String h_id_match)throws Exception;
	public String getimpFucFee(String flg,String dsid,String kvs,String h_id_match)throws Exception;
    public String getimpFucFC(String flg,String dsid,String kvs,String h_id_match)throws Exception;
    public String getimpFucFCByMonth(String flg,String dsid,String kvs,String h_id_match)throws Exception;
	/*********************************************
	 * 2015年11月26日19:30:18 刘振涛
	 * 处理导入Excel的通用存储过程
	 ****************************************/
	public String CommonImpProc(String dsid,String pici,String uid)throws Exception;
	
	
	/**
	 * 
	 * @Title: getUpdateInfo
	 * @author : FuXiangYi  
	 * @Description: 根据sql语句执行增删改
	 * @param sql
	 * @return    
	 * @return boolean 
	 * @date 2014-10-30 上午10:48:35
	 */
	public boolean getUpdateInfo(List<String> sqls)  throws Exception ;
	
	
	/**
	 * 
	 * @Title: getUpdateInfo
	 * @author : FuXiangYi  
	 * @Description: 根据sql语句执行增删改
	 * @param sql
	 * @return    
	 * @return boolean 
	 * @date 2014-10-30 上午10:48:35
	 */
	public boolean getUpdateInfo_s(String sql);
	
	
	
	/**
	 * 
	 * @Title: findBySql
	 * @author : FuXiangYi  
	 * @Description: 根据sql查询数据
	 * @param sql
	 * @return    
	 * @return List<Map<String, Object>> 
	 * @date 2014-10-30 下午03:18:41
	 */
	public List<Map<String, Object>> findBySql(String sql);
	/**
	 * 双击数据判断是否可以点击修改的权限
	 * @param dsId
	 * @param pkVal
	 * @param manId
	 * @return
	 * @throws Exception
	 */
	String dbclickRight(String dsId,String pkVal,String manId) throws Exception;
	
	
	/****
	 * 得到明细中的不可复制的列的集合
	 * @param sql
	 * @return
	 * @throws Exception
	 */
	public List returnNCopyList(String mxDsId) throws Exception;
	
	public List<Map<String, Object>> queryProduct(String H_ISBN, String H_NAME);
	
	
	/***
	 * 发行的批量功能
	 * @param djId
	 * @param plFlag
	 * @param plRows
	 * @param session
	 * @return
	 * @throws Exception
	 */
	public ReturnObject setFxPl(String pkName,String zDsId,DataStore dataStore,String dsId,String djId, String plFlag,JSONObject plObj, JSONArray plRows,
			HttpSession session) throws Exception;

    /**
     *
     * @Title: sureSaveisnull
     * @author :
     * @Description: 根据sql语句执行查询
     * @param cid ccid
     * @return
     * @return int
     * @date 2014-10-30 上午10:48:35
     */
    public int sureSaveisnull(String NAME,String ccid);

	public int cwygrkSaveisnull(String H_ID,String YGR_ID);

    public List<Map<String, Object>> queryProductBYDAY(String H_ISBN, String H_NAME);
}
